package modelo.persistencia.hibernate.pojo;
// Generated 11-dic-2011 19:07:08 by Hibernate Tools 3.2.1.GA


import java.text.SimpleDateFormat;
import java.util.AbstractList;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * Pista 
 */
public class PistaImpl  implements java.io.Serializable, Pista {


     private int idPista;
     private String nombre;
     private String descripcion;
     private String ubicacion;
     private String tipo;
     private Double precio;
     private Set alquilers = new HashSet(0);

    public PistaImpl() {
    }


    public PistaImpl(int idPista) {
        this.idPista = idPista;
    }
    public PistaImpl(int idPista, String nombre, String descripcion, String ubicacion, String tipo, Double precio, Set alquilers) {
       this.idPista = idPista;
       this.nombre = nombre;
       this.descripcion = descripcion;
       this.ubicacion = ubicacion;
       this.tipo = tipo;
       this.precio = precio;
       this.alquilers = alquilers;
    }

    public int getIdPista() {
        return this.idPista;
    }

    public void setIdPista(int idPista) {
        this.idPista = idPista;
    }
    public String getNombre() {
        return this.nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
    public String getDescripcion() {
        return this.descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }
    public String getUbicacion() {
        return this.ubicacion;
    }

    public void setUbicacion(String ubicacion) {
        this.ubicacion = ubicacion;
    }
    public String getTipo() {
        return this.tipo;
    }

    public void setTipo(String tipo) {
        this.tipo = tipo;
    }
    public Double getPrecio() {
        return this.precio;
    }

    public void setPrecio(Double precio) {
        this.precio = precio;
    }
    public Set getAlquilers() {
        return this.alquilers;
    }

    public void setAlquilers(Set alquilers) {
        this.alquilers = alquilers;
    }


    public List<String> horasLibres(Date dia){
        List<String> horas=new ArrayList<String>();
        horas.add("09:00");
        horas.add("10:00");
        horas.add("11:00");
        horas.add("12:00");
        horas.add("13:00");
        horas.add("14:00");
        horas.add("15:00");
        horas.add("16:00");
        horas.add("17:00");
        horas.add("18:00");
        horas.add("19:00");
        horas.add("20:00");
        horas.add("21:00");


        SimpleDateFormat sdfhora=new SimpleDateFormat("HH:mm");
        SimpleDateFormat sdfdia=new SimpleDateFormat("dd/MM/yy");
        String hora;

        for(Object alquiler:alquilers){
            AlquilerImpl a=(AlquilerImpl)alquiler;

            if(sdfdia.format(dia).equals(sdfdia.format(a.getHora())))
            {
                if(horas.contains(sdfhora.format(a.getHora())))
                    horas.remove(sdfhora.format(a.getHora()));
            }
            
        }

        if(horas.isEmpty())
            horas.add("Ninguna");

        return horas;
    }


    public List<ArrayList> getInformeHoras(Date dia){
        List<ArrayList> informe=new ArrayList<ArrayList>();

        List<String> horas=new ArrayList<String>();
        horas.add("09:00");
        horas.add("10:00");
        horas.add("11:00");
        horas.add("12:00");
        horas.add("13:00");
        horas.add("14:00");
        horas.add("15:00");
        horas.add("16:00");
        horas.add("17:00");
        horas.add("18:00");
        horas.add("19:00");
        horas.add("20:00");
        horas.add("21:00");


        List<Boolean> disponibles=new ArrayList<Boolean>();
        for(int i=0;i<horas.size();i++)
            disponibles.add(true);



        


        SimpleDateFormat sdfhora=new SimpleDateFormat("HH:mm");
        SimpleDateFormat sdfdia=new SimpleDateFormat("dd/MM/yy");
        String hora;

        for(Object alquiler:alquilers){
            AlquilerImpl a=(AlquilerImpl)alquiler;
            boolean estado=true;
            if(sdfdia.format(dia).equals(sdfdia.format(a.getHora())))
            {
                
                if(horas.contains(sdfhora.format(a.getHora())))
                {
                    String aa=sdfhora.format(a.getHora());
                    disponibles.set(horas.indexOf(aa), false);
                }
            }

        }

        informe.add((ArrayList) horas);
        informe.add((ArrayList) disponibles);

        return informe;
    }


    
    public List<Date> diasOcupados(){
        List<Date> dias=new ArrayList<Date>();
        
        for(Object alquiler:alquilers){
            AlquilerImpl a=(AlquilerImpl)alquiler;
            if(horasLibres(a.getHora()).size()>=13)
                dias.add(a.getHora());
        }
        
        return dias;
    }






}


